package com.sjb.training.lc;

import java.util.HashMap;

/**
 * Created with IntelliJ IDEA.
 * lc.904 水果成篮
 * @Author: 有点儿意思
 * @Description:
 */
public class TotalFruit {

    public static void main(String[] args) {
        int[] fruits = {3,3,3,1,2,1,1,2,3,3,4};
        System.out.println(totalFruit(fruits));
    }

    public static int totalFruit(int[] fruits) {

        HashMap<Integer, Integer> cnt = new HashMap<>();
        int left = 0,ans = 0;
        for (int right = 0; right < fruits.length; right++) {
            cnt.put(fruits[right],cnt.getOrDefault(fruits[right],0)+1);
            // 由于Map的key是不能重复的，所以Map.size()返回的是独特的key的数量 如22111 size还是为2
            while (cnt.size() > 2){
                // 把左边的元素加入map中
                cnt.put(fruits[left],cnt.get(fruits[left]) - 1);
                // 如果map中左边的元素为0 从map中移除
                if(cnt.get(fruits[left]) == 0){
                    cnt.remove(fruits[left]);
                }
                ++ left;
            }
            ans = Math.max(ans,right - left + 1);
        }
        return ans;
    }
}
